package com.top10.bean;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;

/**
 * 文件操作工具类
 * @author zp
 * @date 2018/3/6
 */
@Component(value = "fileBean")
public class FileBean {

    private final Logger LOG = LoggerFactory.getLogger(this.getClass());



    /**
     * 单文件上传，指定文件名和保存路径
     * 出错原因：文件为空，指定路径不合法，指定路径已经有同名文件
     * @param file
     * @param savePath
     * @param fileName
     * @return 文件是否保存成功
     */
    public boolean fileUpload(MultipartFile file,
                              String savePath,
                              String fileName){
        if (!file.isEmpty()) {
            try {
                // 建立目录
                File dir = new File(savePath + File.separator);
                if (!dir.exists()){
                    dir.mkdirs();
                }
                // 查找是否有同名文件
                File[] files = dir.listFiles();
                String hasFileName = "";
                for(int index = 0; index < files.length; index++){
                    hasFileName = files[index].getName();
                    if(fileName.equals(hasFileName)){//指定目录中已经有同名文件
                        LOG.info("保存文件出错：指定目录中已经有同名文件");
                        return false;
                    }
                }
                // 保存文件
                File serverFile = new File(dir.getPath() + File.separator + fileName);
                file.transferTo(serverFile);//保存文件
            } catch (Exception e) {
                LOG.info("保存文件出错：" + e.getMessage());
                return false;
            }
        } else {//文件为空
            LOG.info("保存文件出错：文件内容为空");
            return false;
        }
        return true;
    }

    /**
     * 删除单个文件
     * @param filePath : 待删除文件的路径
     * @return
     * @throws Exception
     */
    public boolean deleteFile(String filePath)throws Exception{
        File file = new File(filePath);
//        if(!file.isFile()){
//            return false;
//        }
        if( !file.exists()){//文件不存在，则默认已删除
            return true;
        }
        return  file.delete();
    }


}